package controladores;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import modelos.Habitacion;

public class Tablero {

	ArrayList<String> fechasTablero = new ArrayList<String>();
	
	public Date muestraMatrizHabitacionDias(Date fechaInicialDeLaSemana, ArrayList<Habitacion> listaDeHabitaciones, int cantDias, ArrayList<MatrizHabitacionDias> reservaSeleccionada) {
		Calendar diaAMostrar = Calendar.getInstance();
		SimpleDateFormat formatoDDMMYYYY = new SimpleDateFormat("dd/MM/yyyy");
		diaAMostrar.setTime(fechaInicialDeLaSemana);
		System.out.print("            ");
		
		//Imprime la cabecera de fechas
		for (int x=1; x<=cantDias; x++){
			System.out.print(formatoDDMMYYYY.format(diaAMostrar.getTime()) + "  ");
			fechasTablero.add(formatoDDMMYYYY.format(diaAMostrar.getTime()));
			diaAMostrar.add(diaAMostrar.DATE, 1);
		}
		
		diaAMostrar.add(diaAMostrar.DATE, -1);
		
		// recorre listaDeHabitaciones "x"
		// por cada habitacion de listaDeHabitaciones recorre cada fecha
		// si la habitacion de lista de habitaciones coincide con la habitacion de reservaSeleccionada
		// Si es igual, compara fecha actual con fecha de habitacion de reservaSeleccionada 
		
		boolean seleccionado = false;
		for (int x=0; x<listaDeHabitaciones.size(); x++){
			System.out.println();
			System.out.print(listaDeHabitaciones.get(x).getNomhabitacion() + "-" + listaDeHabitaciones.get(x).getTipoHabitacion().substring(0, 2) + "    ");
			
			for (int y=0; y<fechasTablero.size(); y++){
				for (int z=0; z<reservaSeleccionada.size();z++){
					if (fechasTablero.get(y).trim().equals(reservaSeleccionada.get(z).getFecha().trim())){
						if (listaDeHabitaciones.get(x).getNomhabitacion().equals(reservaSeleccionada.get(z).getHabitacion())){
							String s = String.format("  [    %s   ]", reservaSeleccionada.get(z).getEstado());
							System.out.print(s);
							seleccionado = true;
						}
					}
				}
				if (!seleccionado) {
					System.out.print("  [        ]");
				}
				seleccionado=false;
			}
		}
		
		return diaAMostrar.getTime();
	}

	public Date getFechaInicialDeLaSemana(int indicadorCalendario) {

		
		Calendar ahoraCal = Calendar.getInstance();
		switch (indicadorCalendario){
			case -1: ahoraCal.add(Calendar.DATE, -8); break; //muestra la semana anterior
			case 1: ahoraCal.add(Calendar.DATE, 6); break; // muestra la siguiente semana
			case -2: ahoraCal.add(Calendar.DATE, -15); break; // muestra el bloque de las dos semanas anteriores
			case 2: ahoraCal.add(Calendar.DATE, 13); break; // muestra el bloque de las siguientes dos semanas
			case -3: ahoraCal.add(Calendar.DATE, -22); break; // muestra el bloque de las tres semanas anteriores
			case 3: ahoraCal.add(Calendar.DATE, 20); break; // muestra el bloque de las siguientes tres semanas
			case -4: ahoraCal.add(Calendar.DATE, -32); break; // muestra el bloque del mes anterior
			case 4: ahoraCal.add(Calendar.DATE, 30); break; // muestra el bloque del mes siguiente
			default: ahoraCal.add(Calendar.DATE, -1); break; 
		}
		
		
		return ahoraCal.getTime();
	}

}
